﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Outcoder.UserOptionsModel;

namespace Outcoder.Services
{
	public interface IUserOptionGroupings : IEnumerable<IGrouping<IOptionCategory, IUserOptionReaderWriter>>
	{
		void Refresh();
	}

	/* TODO: [DV] Comment. */
	public interface IUserOptionsService
	{
		/// <summary>
		/// Gets the user options grouped into categories.
		/// </summary>
		IUserOptionGroupings UserOptionGroupings
		{
			get;
		}

		void Register(IUserOption userOption, IOptionCategory optionCategory);
		void Register(IEnumerable<IUserOption> userOptions, IOptionCategory optionCategory);

		void AddCategory(IOptionCategory optionCategory);

		void ClearAll(bool removeCategories = true);

		bool Deregister(IUserOption userOption);
	}


}
